package src;


import java.util.List;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;


/**
 *
 * @author JMix
 */
public class BarraMenu extends JMenuBar{

    private JVentana listener;
    
    public BarraMenu(JVentana listener) {
        this.listener = listener;
        this.crearMenu();
    }
    
        private void crearMenu()
    {
        List<ObjetoMenu> menusObject = EstructuraMenu.getMenus();
        for( ObjetoMenu menuObject : menusObject )
        {
           JMenu menu = this.agregarMenu(menuObject);
           List<ObjetoMenu> itemsObject = EstructuraMenu.getItemsMenu(menuObject);
           for( ObjetoMenu itemObject : itemsObject )
           {
               this.agregarMenuItem(menu, itemObject);
           }
           this.add(menu);
        }
    }
    
    private JMenu agregarMenu( ObjetoMenu menuObject )
    {
        JMenu menu = new JMenu( menuObject.getNombre() );
        menu.setMnemonic( menuObject.getMnemonic() );
        if( menuObject.hasAcceso() )
        {
            menu.setAccelerator( menuObject.getAcceso() );
        }
        return menu;
    }
    
    private void agregarMenuItem( JMenu parent, ObjetoMenu itemObject )
    {
        if( itemObject.isSeparador() )
        {
            parent.addSeparator();
            return;
        }
        JMenuItem item = new JMenuItem(itemObject.getNombre());
        if( itemObject.hasMnemonic() )
        {
            item.setMnemonic(itemObject.getMnemonic());
        }
        if( itemObject.hasAcceso() )
        {
            item.setAccelerator( itemObject.getAcceso() );
        }
        item.setActionCommand(itemObject.getNombre());
        item.addActionListener(this.listener);
        parent.add(item);
    }
   
}
